iT邦幫忙

2023 iThome 鐵人賽

DAY 1
1

我是 migo data team 的 Data Engineer Bruce ,我們團隊從開始研究 dbt 到實際轉換正式上線已將近一年,之後幾篇將分享 dbt 的特色功能, 中間碰到的坑以及有什麼特別解決辦法

  • dbt 的定義: 根據官方文件介紹 dbt 的第一句, dbt 是資料團隊用於資料轉換的工具,可以幫團隊執行更多工作產出高品質的結果

→ 所以我們知道 dbt 使用於資料 ETL 中的 Transformation 部分,但為什麼 dbt 可以幫我們做更多事情以及更高品質? 他可以取代舊方法嗎? 這是本篇要討論的主題

  • 以前使用的方法,以 bigquery 為例

    執行 view 更新 table

# cmd
bq query --max_rows 3 --project_id {project_id} --replace
          --destination_table "{project_id}:{dataset}.{to_table}"
          "SELECT * FROM `{project_id}.{view_dataset}.{from_view}`"

我們把 table 的轉換邏輯寫在 {from_view} 中,使用 gcloud sdk 執行 bq query 每次 replace 掉{to_table},如果要做10 張 table 的 transaformation,就要列出 10 個 {to_table} for each 處理。再如果 table 間有順序性,就要寫成前後兩段的 shell 語法。所以只要 transformation 層數及 table 數量愈多,排程就會變很複雜,很複雜就會很難管理,很難管理的意思是你要新增修改刪除 column 或 table,都會影響到下游 table,非常容易出錯

  • 現在使用 dbt 呢?
dbt run --select {model}

不管10張100張 table,或是幾層的 table 相依關係,現在只要一行 dbt run 就可以取代掉。 所有 table 相依及 column 都寫在類似以前的 view,在 dbt 中我們稱為 model,dbt run 會幫你執行整段流程,幫你依照順序建好 table, view。

呼應開頭官方說的 dbt 優點,一行 dbt run 就可以幫你執行所有工作節省設定時間**,不需設定複雜的 table 相依關係幫你產出更高品質的結果不容易出錯,**這就是我認為 dbt 帶來最大的好處,假如你的 transformation 流程有碰到上述的痛點, 趕快開始研究 dbt 吧!

我開始決定要用 dbt 了,需要做什麼事? 依據官方文件操作了還碰到問題怎麼解決?

以下是我根據官方文件及過去一年的使用心得分享,若官方文件看了還有點模糊,可能對你有幫助

source: https://docs.getdbt.com/docs/introduction


下一篇
dbt Cloud & dbt Core 怎麼選擇?
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言